In system virtualization, multiple virtual computing systems are created within a single physical computing system. The physical system can be a stand-alone computer, or alternatively, a computing system utilizing clustered computers and components. Virtual systems are independent operating environments that use virtual resources made up of logical divisions of physical resources such as processors, memory, and input/output (I/O) adapters. System virtualization is implemented through some managing functionality, typically hypervisor technology. Hypervisors, also called virtual machine managers (VMMs), use a thin layer of code in software or firmware to achieve fine-grained, dynamic resource sharing. Hypervisors are the primary technology for system virtualization because they provide the greatest level of flexibility in how virtual resources are defined and managed.
Hypervisors provide the ability to divide physical computing system resources into isolated logical partitions. Each logical partition operates like an independent computing system running its own operating system (e.g., a virtual system). Operating systems running in a virtualized environment are often referred to as “guest machines.” Exemplary operating systems include AIX®, IBM® i, Linux®, and the virtual I/O server (VIOS). Hypervisors can allocate dedicated processors, I/O adapters, and memory to each logical partition and can also allocate shared processors to each logical partition. Unbeknownst to the logical partitions, the hypervisor creates a shared processor pool from which the hypervisor allocates virtual processors to the logical partitions as needed. In other words, the hypervisor creates virtual processors from physical processors so that logical partitions can share the physical processors while running independent operating environments.
The hypervisor can also dynamically allocate and de-allocate dedicated or shared resources (such as processors, I/O, and memory) across logical partitions while the partitions are actively in use. This is known as dynamic logical partitioning or dynamic LPAR and allows the hypervisor to dynamically redefine all available system resources to reach optimum capacity for each partition.
In addition to creating and managing the logical partitions, the hypervisor manages communication between the logical partitions via a virtual switch. To facilitate communication, each logical partition may have a virtual adapter for communication between the logical partitions, via the virtual switch. The type of the virtual adapter depends on the operating system used by the logical partition. Examples of virtual adapters include virtual Ethernet adapters, virtual Fibre Channel adapters, virtual Small Computer Serial Interface (SCSI) adapters, and virtual serial adapters.
Virtual adapters are often implemented through a VIOS partition which manages the physical I/O adapters (SCSI disks, Fibre Channel disks, Ethernet, or CD/DVD optical devices). The other logical partitions may be considered “clients” or virtual I/O clients (VIOCs) to the VIOS. The VIOS can provide virtualized network resources to the other logical partitions via a Shared Ethernet adapter (SEA). The SEA bridges a physical Ethernet adapter with the respective virtual adapters and may apportion network bandwidth.
In virtual environments and in data storage systems generally, snapshots are a common way to preserve the state and data of a virtual machine at a specific point in time. Snapshots include both the virtual machine's power state and the data that is stored within the virtual machine at the time the snapshot was captured. The data includes all of the files that make up the virtual machine, including disks, memory, and other devices, such as virtual network interface cards. Snapshots are preserved as a guide for restoring the virtual machine in the event that it fails. A virtual machine provides several operations for creating and managing snapshots and snapshot chains, allowing a user to create snapshots, revert to any snapshot in the chain, and remove snapshots. In a virtual environment, the hypervisor includes a snapshot manager to manage the snapshots for virtual machines.
When a snapshot is created, it contains a collection of virtual machine (VM) disks (referred to as the VM disk file or VM disk) and delta files, and a file containing the virtual machine's snapshot information, which is the primary source of information for the snapshot manager. All data pertaining to the virtual machine can be read from the snapshot files. The VM disk contains the components of the virtual machine, and when a snapshot is created, the original VM disk is set to read only. All changes to the virtual machine after the point in time the snapshot was created are stored in the delta file. The delta files may be referred to as child disks, and the child disks can later be considered parent disks for future child disks.
New snapshots, and corresponding child disks, can be created from existing snapshots, resulting in snapshot chains. Multiple snapshot chains may be created from the same source snapshot, which creates snapshot trees. New branches added to an existing tree may cause the existing snapshot chains to become irrelevant, resulting in inactive disks on the old branches and active disks on the new branches, or in the active snapshot chain. Inactive disks can have no impact on the virtual machine and are not used for processing of the guest machine. The original VM disk, all snapshots, and child disks are stored in the same local data store on the underlying physical computing system's hardware.